/**
 * 
 */
package ar.com.sebasoft.prestalibro.model;

import com.j256.ormlite.dao.ForeignCollection;
import com.j256.ormlite.field.DataType;
import com.j256.ormlite.field.DatabaseField;
import com.j256.ormlite.field.ForeignCollectionField;
import com.j256.ormlite.table.DatabaseTable;

/**
 * @author SebaSOFT
 * 
 */
@DatabaseTable(tableName = "libros")
public class Libro {

	@DatabaseField(generatedId = true, dataType = DataType.INTEGER)
	private int id = -1;

	@DatabaseField(canBeNull = false, dataType = DataType.STRING)
	private String isbn = null;

	@DatabaseField(canBeNull = false, dataType = DataType.STRING)
	private String nombre = null;

	@DatabaseField(canBeNull = false, dataType = DataType.STRING)
	private String autor = null;

	@DatabaseField(canBeNull = false, dataType = DataType.SHORT)
	private short anio = -1;

	@DatabaseField(canBeNull = false, foreign = true)
	private Genero genero = null;

	@ForeignCollectionField(eager = false)
	ForeignCollection<Ejemplar> ejemplares = null;

	public Libro() {
		// ORMLite needs this
	}

	/**
	 * @param isbn
	 * @param nombre
	 * @param autor
	 * @param anio
	 * @param genero
	 */
	public Libro(String isbn, String nombre, String autor, short anio, Genero genero) {
		this.isbn = isbn;
		this.nombre = nombre;
		this.autor = autor;
		this.anio = anio;
		this.genero = genero;
	}

	/**
	 * @return the id
	 */
	public final int getId() {
		return this.id;
	}

	/**
	 * @param id
	 *            the id to set
	 */
	public final void setId(int id) {
		this.id = id;
	}

	/**
	 * @return the isbn
	 */
	public final String getIsbn() {
		return this.isbn;
	}

	/**
	 * @param isbn
	 *            the isbn to set
	 */
	public final void setIsbn(String isbn) {
		this.isbn = isbn;
	}

	/**
	 * @return the nombre
	 */
	public final String getNombre() {
		return this.nombre;
	}

	/**
	 * @param nombre
	 *            the nombre to set
	 */
	public final void setNombre(String nombre) {
		this.nombre = nombre;
	}

	/**
	 * @return the autor
	 */
	public final String getAutor() {
		return this.autor;
	}

	/**
	 * @param autor
	 *            the autor to set
	 */
	public final void setAutor(String autor) {
		this.autor = autor;
	}

	/**
	 * @return the anio
	 */
	public final short getAnio() {
		return this.anio;
	}

	/**
	 * @param anio
	 *            the anio to set
	 */
	public final void setAnio(short anio) {
		this.anio = anio;
	}

	/**
	 * @return the genero
	 */
	public final Genero getGenero() {
		return this.genero;
	}

	/**
	 * @param genero
	 *            the genero to set
	 */
	public final void setGenero(Genero genero) {
		this.genero = genero;
	}

	/**
	 * @return the ejemplares
	 */
	public final ForeignCollection<Ejemplar> getEjemplares() {
		return this.ejemplares;
	}
}
